package cn.edu.njust.alg.leetcode;

/**
 * 创建时间：2015年6月15日 上午11:47:37 项目名称：AlgorithmExercise
 * 
 * @author Zhou Xiumin
 * @version 1.0
 * @since JDK 1.7.0_21 文件名称：Leetcode_0_t.java 类说明：
 */
public class Leetcode_50_powx_n {

	public static double myPow(double x, int n) {
		if (n == 0) {
			return 1.0;
		}else if(n==1){
			return x;
		}
		System.out.println(1&n);
		if (Math.abs(Math.abs(x) - 1) < 1e-7) {
			return myPow(x, 1 & n);
		}
		boolean flag = true;
		if (n < 0) {
			flag = false;
			n = -n;
		}
		double r = 1.0;
		double temp = x;
		while (n != 0) {
			if ((n & 1) == 1) {
				r *= temp;
			}
			temp *= temp;
			n = n >> 1;
		}
		if (!flag) {
			r = 1.0 / r;
		}
		return r;
	}

	public static void main(String[] args) {
		System.out.println(myPow(1.00000, 2147483647));

	}

}
